package com.nwcl.basic.service;


import com.nwcl.basic.bo.OrdersBO;
import com.nwcl.common.result.Page;
import com.nwcl.ysx.request.OrdersPageRequest;

import java.util.Date;

public interface OrdersService {
    /*
     * @Description:保存订单
     * @Author liguiqin
     * @Date 2023/5/26 13:59
     * @param: ordersBO
     * @return com.nwcl.basic.entity.Orders
     * @UpdateDate 2023/5/26 13:59
     **/
    Integer save(OrdersBO ordersBO);

    /*
     * @Description: 生成订单号
     * @Author liguiqin
     * @Date 2023/5/26 14:04
     * @param: type 订单类型
     * @return java.lang.String
     * @UpdateDate 2023/5/26 14:04
     **/
    String generateOrderCode(Integer type);

    /*
     * @Description: 根据订单号查询订单
     * @Author liguiqin
     * @Date 2023/5/26 16:22
     * @param: orderCode 订单号
     * @return OrdersBO
     * @UpdateDate 2023/5/26 16:22
     **/
    OrdersBO getOrderByCode(String orderCode);

    /*
     * @Description:更新订单状态
     * @Author liguiqin
     * @Date 2023/5/26 17:21
     * @param: orderCode 订单号
     * @param: status   订单状态
     * @param: payTime  支付时间
     * @return void
     * @UpdateDate 2023/5/26 17:21
     **/
    void updateOrderStatus(String orderCode, Integer status, Date payTime);

    /*
     * @Description:  根据用户id查询订单分页列表
     * @Author liguiqin
     * @Date 2023/5/29 10:16
     * @param: param
     * @return com.nwcl.common.result.Page<com.nwcl.basic.bo.OrdersBO>
     * @UpdateDate 2023/5/29 10:16
     **/
    Page<OrdersBO> page(OrdersPageRequest param);

    /*
     * @Description:根据id,用户id查询订单
     * @Author liguiqin
     * @Date 2023/5/29 10:16
     * @param: id
     * @param: userId 用户id
     * @return com.nwcl.basic.bo.OrdersBO
     * @UpdateDate 2023/5/29 10:16
     **/
    OrdersBO getByIdAndUserId(Integer id, Integer userId);

    /*
     * @Description: 根据用户id查询订单数量
     * @Author liguiqin
     * @Date 2023/5/29 10:17
     * @param: userId
     * @return java.lang.Integer
     * @UpdateDate 2023/5/29 10:17
     **/
    Integer countByUserId(Integer userId);
}




